Journal d'un Terrien

Web log de Serge Boisse

On line depuis 1992 !

Publicité
Si cette page vous a plu, Copiez son adresse et partagez-la !
http://sboisse.free.fr/trucs et astuces/Obsidian/Plugins/Templater.php
Savez-vous quels sont les articles les plus vendus sur Amazon.fr ?
Templater

Templater (plugin)

Voir aussi: Templater scripts

Templater est un langage de template qui permet d'insérer des variables et des fonctions de résultats dans vos notes Obsidian. Il permet également d'exécuter du code JavaScript manipulant ces variables et fonctions.

modes de lancement

Templater peut se lancer de différentes façons :

  • par un @raccourcis clavier(lien privé) : J'ai programmé CTRL-t pour lancer "Modeles/Gabarits pour des nouvelles notes/Test Templater.md"
    Si ce dernier contient <% tp.config.run_mode %>, en tapant le raccourci, "1" sera inséré à l'emplacement du curseur. (donc mode 1 = lancement par hotkey)
  • En sélectionnant l'icône "< % dans la barre de navigation (à gauche). Templater propose une liste de templates, et l'insère dans la note courante
  • Par la palette de commandes (ctrl-p). Commande "Templater : XXX" e.g. open insert template modal"
  • En créant un fichier : il faut paramétrer dans les options de Templater les couples répertoires / modèle
    • j'ai paramétré pour les livres lu le modèle M_livre_lu
    • et pour toutes les notes (répertoire "/") le modèle "M_Note avec YAML"

Syntaxe

Les commandes Templater (dans le gabarit) sont entre <% et %>
Elle sera exécutée quand on passe en mode édition (une seule fois à cause du cache)
Une commande sera "dynamique" si elle commence par <%+ et finit par %>

si le code contient du javascript il faut faire <%* et %>
on a accès à la variable tp

Pour récupérer des éléments du frontmatter (YAML) :
tp.frontmatter["variable name with spaces"]
ou tout simplement "tp.frontmatter.nom"

A noter que ce ne semble pas compatible avec les variables "{{YAML}}"

exemples

Run mode : tp.config.run_mode
Nom fichier courant : tp.file.title
chemin : tp.file.path
citation du jour : tp.web.daily_quote()

Templater agit même dans les blocs de code !
ci dessous j'ai écrit (supprimer les blancs après les %) < %+ tp.file.title % >
Templater

Templater peut afficher des prompts pour demander dynamiquement des infos à l'utilisateur:
const name = await tp.system.prompt('Character Name');
et même de choisir une entrée dans une liste :
const sex = await tp.system.suggester(["Male","Female"],["Male","Female"]);

accès à obsidian api

il suffit d'utiliser tp.app .
en mode édition, on a même un système d'autocompléttion pour toutes les fonctions !

scripts

accès à DataviewJS depuis templater

il faut utiliser const dv = this.app.plugins.plugins["dataview"].api;
exemple :

<%* 
const dv = this.app.plugins.plugins["dataview"].api; 
const query = 'LIST aliases WHERE aliases LIMIT 5'; 
const result = await dv.queryMarkdown(query); 
if ( result.successful ) { tR += result.value } 
else { tR += "~~~~\n" + result.error + "\n~~~~" }
%>

Il semble que la variable tR est le résultat de templater (en markdown)
on peut remplacer querypar n'importe quelle requête dataviewjs

const query = `
LIST file.mday
LIMIT 10
`

Autre exemple :
<%*
const dv = app.plugins.plugins["dataview"].api;
const query = TABLE WITHOUT ID link(file.link, banner_icon + " " + project) AS Projet, row["Prochaine action"] as "Prochaine action" WHERE type="dashboard" AND status="en cours"
let out = await dv.queryMarkdown(query)
tR += out.value
%>

<%*
tR = "coucou"
%>"
ne marche pas ?

inversement, appeler Templater depuis DataviewJS

dans un bloc dataviewjs :
const tp = app.plugins.plugins["templater-obsidian"].templater.current_functions_object

Publicité
Commentaires

Commentaires (0) :

Page :



Ajouter un commentaire (pas besoin de s'enregistrer)

Pseudo :
Message :


image de protection
En cliquant sur le bouton "Envoyer" vous acceptez les conditions suivantes : Ne pas poster de message injurieux, obscène ou contraire à la loi, ni de liens vers de tels sites. Respecter la "netiquette", ne pas usurper le pseudo d'une autre personne, respecter les posts faits par les autres. L'auteur du site se réserve le droit de supprimer un ou plusieurs posts à tout moment. Merci !
Ah oui : le bbcode et le html genre <br>, <a href=...>, <b>b etc. ne fonctionnent pas dans les commentaires. C'est voulu.
< Retour en haut de la page